This invention relates to a technique for controlling usage of a programmable computing machine and, more particularly, to an apparatus and method for preventing the unauthorized copying or use of software to run the machine and to prevent the unauthorized modification of the operating system of the machine.
In todays world, information has commercial value and therefore has become a valuable asset. As a result, computers and the entire computer industry have grown substantially to process this information or data and put it to work in many ways. While advancement in computer hardware technology is continuing, it is projected that even greater advancement will be made in the computer software industry in view of the large investments that are being made in the software area.
Along with the growth of the computer industry has come significant problems relating to the protection of software and computer security and privacy. More particularly, in the field of software protection, software developers can not adequately protect their large investments against the unauthorized copying of the software. For example, the hardware manufacturer of microprocessors will supply identical machines to a plurality of different users. Typically, the architecture of the microprocessor is such as to enable the users themselves to program the machine via conventional assembly language or higher level language, e.g., Cobol, such as is described in a series of three articles entitled Unraveling the Mystery in User Microprogramming, by Robert Frankenberg, appearing in Technology Profile, June, 1977. A problem, though, is that the program written by one user for use on this user's machine can be copied and run on the machine of another user without authorization of the one user.
One approach to protecting the unauthorized copying a software is for the microprocessor user to write a program having instructions which utilize the published operation codes of the instruction set of the microprocessor. Then, the program writer can take a certain number of these instructions, e.g., 20, and reduce them to one instruction in microcode. The user can then assign a new operation code to this one instruction and have the microprocessor manufacturer modify the machine by adding this new operation code to the instruction set without publishing it to anyone else. Consequently, knowledge of the function of the new operation code would have to be obtained before the function could be rewritten with the published instruction set of another machine and the program with the new operation code run on such other machine.
A disadvantage with this approach is that the reduction of the 20 instructions to one instruction in microcode complicates the programming. Also, a control store of the microprocessor, which is a memory where microprograms are stored and is used by a control processor of the microprocessor as its memory, would have to be modified to provide for lines of microcoding in addition to those required for the standard routines of the microprogram.
In connection with the field of computer security and privacy, large computing machines are provided with operating systems developed by the manufacturer and which also include instructions having operation codes. For example, the operating system may be used to access information stored within a computer such as deposit records of a bank. It is possible for someone to enter the room in which the computer is located, and manipulate the control panel of the computer to modify the operating system without authorization to alter the bank deposit records.
Various solutions to this problem of computer security and privacy have been proposed including identity verification techniques that control who gains access to the information within the computer. These techniques include fingerprint identification, voice identification and the use of computer readable ID cards. However, these solutions are recognized as not being entirely satisfactory since the art recommends that management controls and procedures should also be implemented for the operation of the computer. These controls and procedures range from the selection of a secure location for the computer to well designed rules spelling out who may use it and how it may be used. An extensive discussion of the problem of computer security and privacy is set forth in a book entitled Modern Methods for Computer Security and Privacy, by Hoffman, Prentice-Hall, Inc., N.J., 1977.